Das folgende Bild illustriert das Einfügen eines Elementes in eine verkettete Liste. Das neue Element wird an eine beliebige freie Stelle in den Speicher geschrieben, ohne die bereits vorhandenen Zellen zu verschieben. Das Einbinden in die bestehende Kette geschieht durch "Umbiegen" von Verweisen.
Der Nachteil verketteter Listen gegenüber Datenfeldern ist, dass die direkte Suche und damit auch die binäre Suche nicht möglich ist. Verkettete Listen müssen sequentiell durchsucht werden. Um ein Element zu erreichen, muss man am Anfang der Kette beginnen und den Verweisen folgen.
Verkettete Strukturen lassen sich in VBA mit Hilfe von Objekten und Objektverweisen implementieren. Die Zellen der verketteten Liste im Bild werden beispielsweise als Objekte mit zwei Eigenschaften dargestellt. Die erste Eigenschaft speichert den Inhalt und die Zweite den Verweis auf den Nachfolger. Die Beschreibung der Objekte im Klassenmodul ist rekursiv, da sie sich selbst in ihre Definition einbezieht.
Klassenmodul cZelle
Public Inhalt As String 'Inhalt Public Nachfolger As cZelle 'Verweis auf Nachfolger
Der folgende Code baut die in Bild a dargestellt Liste auf. Die Objektvariable Anfang wird auf Modulebene vereinbart, damit nach Ausführung der Prozedur Test() auf die Liste zugegriffen werden kann. Die vier Objektvariablen Zelle1 bis Zelle4 werden dagegen nur vorübergehen für den Aufbau der Liste benötigt.
Standardmodul Prozeduren
Private Anfang As cZelle Private Sub Test() Dim Zelle1 As cZelle 'für Element anna Dim Zelle2 As cZelle 'für Element beat Dim Zelle3 As cZelle 'für Element clara Dim Zelle4 As cZelle 'für Element david '--- Erstelle die Elemente der verketteten Liste Set Zelle1 = New cZelle Zelle1.Inhalt = "anna" Set Zelle2 = New cZelle Zelle2.Inhalt = "beat" Set Zelle3 = New cZelle Zelle3.Inhalt = "clara" Set Zelle4 = New cZelle Zelle4.Inhalt = "david" '--- Verkette die Elemente Set Anfang = Zelle1 Set Zelle1.Nachfolger = Zelle2 Set Zelle2.Nachfolger = Zelle3 Set Zelle3.Nachfolger = Zelle4 End Sub